package com.cpimex.eprice.model;

import java.util.*;
import java.sql.*;
import com.cpimex.eprice.bean.ClienteBean;
import com.cpimex.eprice.bean.ClienteCBean;

public class ClienteCritico {

    private final String ELIMINA = "eliminaCliC";
    private final String INSERTA = "insertaCliC";


    public void insertaClienteC(Statement stmt, String str_codigoClienteC)throws SQLException{
        String str_query = " INSERT INTO ep_clienteCritico(codigo_ccritico) " +
                           "         VALUES('"+ str_codigoClienteC +"')";
        stmt.executeUpdate(str_query);
    }

    public void eliminarClienteC(Statement stmt, String str_codigoClienteC)throws SQLException{
        String str_query = "DELETE FROM ep_clienteCritico " +
                           "       WHERE codigo_ccritico = '"  + str_codigoClienteC + "' ";
        stmt.executeUpdate(str_query);
    }

    public ArrayList listadoCliC(Statement stmt) throws SQLException {
        ArrayList arr_cliCritico = new ArrayList();
        String str_query = "SELECT codigo_vwccritico,                          " +
                           "       descripcion_vwccritico                      " +
                           " FROM ep_vw_clienteCritico                         " +
                           " ORDER BY codigo_vwccritico                        ";

        boolean bool_fila = false;
        ResultSet rs = stmt.executeQuery(str_query);
        while(rs.next()){

            String str_codigoCcritico = rs.getString("codigo_vwccritico");
            String str_clienteCritico = rs.getString("descripcion_vwccritico");
            Map map_url = new HashMap();

            map_url.put("action", ELIMINA);
            map_url.put("id_clienteC", str_codigoCcritico);

            ClienteCBean bn_clienteC = new ClienteCBean();
            bn_clienteC.setStr_codigoCliC(str_codigoCcritico);
            bn_clienteC.setStr_cliCritico(str_clienteCritico);
            bn_clienteC.setMap_param(map_url);
            bn_clienteC.setBool_fila(bool_fila);

            bool_fila = !bool_fila;
            arr_cliCritico.add(bn_clienteC);
        }
        return arr_cliCritico;
    }

    public ArrayList listadoCli(Statement stmt, String str_) throws SQLException {
        ArrayList arr_cliente = new ArrayList();
        String str_query = " SELECT vc.codigo_cli," +
                           "       vc.descripcion_cli, " +
                           "       (CASE " +
                           "           WHEN " +
                           "               vc.codigo_cli not in (SELECT codigo_ccritico FROM ep_clienteCritico) " +
                           "           THEN 1 " +
                           "           ELSE 0 " +
                           "       END) AS esCritico " +
                           " FROM ep_vw_cliente vc" +
                           " WHERE 1=1 " +
                           "         AND (codigo_cli LIKE '%"+ str_ +"%' OR " +
                           "             descripcion_cli LIKE '%"+ str_ + "%') ";

        if(!str_.equals("")){
            boolean bool_fila = false;
            ResultSet rs = stmt.executeQuery(str_query);
            while(rs.next()){
                String str_codigo = rs.getString("codigo_cli");
                String str_cliente = rs.getString("descripcion_cli");

                Map map_url = new HashMap();
                map_url.put("action", INSERTA);
                map_url.put("id_clienteC", str_codigo);

                ClienteBean bn_cliente = new ClienteBean();
                bn_cliente.setStr_codgoCli(str_codigo);
                bn_cliente.setStr_descripcionCli(str_cliente);
                bn_cliente.setMap_param(map_url);
                bn_cliente.setBool_fila(bool_fila);
                bn_cliente.setBol_clienteCritico(rs.getBoolean("esCritico"));

                bool_fila = !bool_fila;
                arr_cliente.add(bn_cliente);
            }
        }
        return arr_cliente;
    }
}
